//导入系统模块，node文件下
import axios from 'axios'
//引入qs模块，stringify将对象序列化,parse将字符串对象化
import qs from 'qs'

//获取基础路径
var rootApi=process.env.VUE_APP_ROOTAPI;
//设定基础路径
axios.defaults.baseURL=rootApi;

// 请求的拦截器,所有的请求都会经过这个拦截器
axios.interceptors.request.use(function (config) {
    // Do something before request is sent
    const token = localStorage.getItem("token");
    // 为每个请求头都添加认证TOKEN,注意由于后台使用的是JSON WEB TOKEN,
    //所有token 之前要带上 Bearer空格
    //当我们在请求头里带上token的时候,浏览器默认将这个请求视作复杂请求
    /*当请求被视作复杂请求的时候,浏览器会对服务器发起两次请求
        第一次请求: OPTIONS,这个请求的作用,检测是否能够正常连接服务器
        第二次请求: get/post,这个请求就是正式请求数据
    */
    config.headers.common['Authorization']="bearer "+token;//Authorization是请求头
    return config;
  }, function (error) {
    // Do something with request error
    return Promise.reject(error);
  });
 
//响应的拦截器
axios.interceptors.response.use(function (response) {
    // Do something with response data
    return response;
  }, function (error) {
    // Do something with response error
    return Promise.reject(error);
  });

//二次封装axios
export default{
	get :(url,params)=>{
		//{name:'zmt',password:'123'}=>name='zmt'&password='123'
		url+="?"+qs.stringify(params);
		return axios.get(url).then((response)=>{
			return response;
		})
	},
	
	post:(url,data,config)=>{
		//config特殊文件
		return axios.post(url,qs.stringify(data),config)
		.then((response)=>{
			return response;
		})
	}
}
